Motion control system and method which includes improved pulse placement for smoother operation

ABSTRACT

A motion control system and method are disclosed which provide improved pulse placement for smoother operation of a motion device such as a stepper motor. A placement of pulses may be determined for each of a plurality of time intervals such that the pulses are placed evenly across the plurality of time intervals, wherein the quantity of pulses in each of the time intervals is variable. The pulses may be generated and sent to the motion device to move the object to the desired position. A delay may be used to place each pulse at an arbitrary location within one of the time intervals. Where the desired step rate is fractional, time may be “borrowed” for one loop iteration from other loop iterations. In one embodiment, the step rate may be changed from one loop period to the next.

FIELD OF THE INVENTION

[0001] The present invention relates generally to motion control. Moreparticularly, the present invention relates to a system wherein a motioncontrol system uses pulses to instruct a motion device to move anobject.

DESCRIPTION OF THE RELATED ART

[0002] Motion control is a broad term that may be defined as the precisecontrol of anything that moves. A motion system typically comprises fivemajor components: 1) the moving mechanical device; 2) the motor (servoor stepper motor) with feedback and motion I/O; 3) the motor drive unit;4) the intelligent controller; and 5) the programming/interfacesoftware. Scientists and engineers typically use servo and steppermotors for position and velocity control in a variety ofelectromechanical configurations.

[0003] In particular, stepper motor systems typically include acontroller, a power drive, and a stepper motor. The controller is ableto generate step pulses to command the drive to move the motor (andtherefore the object that is desired to be moved) an incrementalmovement often called a “step.” The drive accepts these pulses andgenerates the high currents and voltages necessary to move the motor.The frequency of the step pulses controls velocity, the rate of changecontrols acceleration, and the total number of pulses controls theposition.

[0004] Prior motion control systems have used proprietary controlhardware to control the motion system. These proprietary systems havesuffered from high cost and limited flexibility. More recently, computersystems are being used in motion control systems. The computer systemmay serve as the operator interface or human machine interface (HMI) aswell as the local control host in the remote system controller platform.The use of personal computers in motion control is widely accepted andgrowing at a significant pace. While many motion control solutions todaystill use standalone distributed motion control and closed architecturesystems, computer-based motion solutions provide added flexibility andthe potential for lower system cost.

[0005] In computer-based stepper motion control systems, it is common tosegment the total motion into short time intervals. During each interval(i.e., each iteration of the loop), the controller decides where themotor should be at the end of the interval. The controller then outputsthe number of step pulses equal to the difference between the targetposition and the current position. It is also common practice to evenlydistribute the required number of pulses across the loop period.However, this even distribution can result in significant short-termvelocity and position error.

[0006] For example, for a loop period of 10 clocks and a step rate of 7clocks, steps may be generated as follows according to the prior artmethod: Period 1 2 3 4 5 6 7 Target Position 1.4 2.9 4.3 5.7 7.1 8.6 10Steps to generate 1 1 2 1 2 1 2 Actual step rate 10 10 5 10 5 10 5

[0007] Because the motion control systems of the prior art use integervalues for steps, the instantaneous step rate (i.e., the step rate perperiod) is either 5 or 10 clocks even though the average step rate is 7clocks. FIG. 4A illustrates a typical graph (of velocity versus time)having significant short-term error according to the prior art motioncontrol system and method.

[0008] Prior art motion control systems also suffer from quantizationerrors, primarily because they can only output step rates that are aninteger number of clock cycles. If a digital motion control system canonly output step rates that are an integer number of clocks, forexample, then it can only choose a step rate of 2 or 3 clocks (ratherthan an ideal 2.4 clocks, for example). If it uses a step rate of 2clocks, then the pulse train will end early in the period and leave deadtime that creates jumps in velocity. If it uses a step rate of 3 clocks,the pulse train will not finish by the end of the period and will runinto the next period.

[0009] Therefore, an improved system and method is desired for motioncontrol using improved pulse placement for smoother operation.

SUMMARY OF THE INVENTION

[0010] One embodiment of the present invention includes a motion controlsystem and method which provides improved pulse placement for smootheroperation of a motion device such as a stepper motor. Although prior artimplementations typically do generate the correct number of steps at thecorrect average velocity, they do so at the expense of short-term error.At both high and low velocities, the motion control system and method asdescribed herein will typically result in smoother operation as well asachieve positional accuracy through accurate pulse placement.

[0011] The motion device (e.g., a stepper motor) is operable to move anobject. The motion device is coupled to a motion control system whichmay include a computer system and a motion controller. The motioncontrol system may include a processor and a memory medium, wherein thememory medium stores a motion control software program which isexecutable by the processor. A power drive may be coupled between themotion device and the motion control system. The power drive may beoperable to receive the pulses from the motion control system, translatethe pulses into power signals, and send the power signals to the motiondevice.

[0012] In one embodiment, to achieve smoother operation, the motioncontrol system and method may place the step pulses more accuratelywithin the loop period. By using a delay time, the pulse train may beshifted to an arbitrary location within the loop period rather thanevenly distributed throughout the loop period as in the prior artimplementations.

[0013] In one embodiment, the motion control system and method maycorrect for quantization errors in the step generation due to digitalclock limits. In one embodiment, the motion control system may generatea pulse train at the slower rate (3 clocks in this example) and correctfor the “borrowed time” in the next loop iteration. Instead of assumingthat each loop period is constant, according to one embodiment of themotion control system and method, an autocorrecting algorithm removesthe borrowed time from its calculations and therefore allows the stepgeneration to catch up at appropriate intervals.

[0014] In one embodiment, a further improvement may be made to improvethe accuracy of the motion control system and method. By allowing thestep rate to change at a programmable point in the middle of the loopiteration (i.e., the series of loop periods), the step pulse generatormay allow the steps generated to consume only the loop period and thuseliminate the borrowing of time from future loop periods.

BRIEF DESCRIPTION OF THE DRAWINGS

[0015] A better understanding of the present invention can be obtainedwhen the following detailed description of the preferred embodiment isconsidered in conjunction with the following drawings, in which:

[0016]FIG. 1 illustrates an example of a system for motion control andmeasurement including an object being scanned according to oneembodiment;

[0017]FIG. 2 illustrates an example of a motion control system accordingto one embodiment;

[0018]FIG. 2A illustrates an example of a motion control system having amotion control interface device and a data acquisition device comprisedwithin a computer system according to one embodiment;

[0019]FIG. 2B illustrates an example of a motion control system having amotion control interface device and an image acquisition devicecomprised within a computer system according to one embodiment;

[0020]FIG. 3 illustrates an example of a motion control system having aPXI chassis including a computer card, motion control interface card,and measurement device according to one embodiment;

[0021]FIGS. 4A, 4C, and 4E illustrate example graphs of velocity versustime in a motion control system according to the prior art;

[0022]FIGS. 4B, 4D, and 4F illustrate example graphs of velocity versustime in a motion control system providing smoother operation accordingto various embodiments;

[0023]FIG. 5 is a flowchart illustrating a motion control method usingimproved pulse placement for smoother operation according to oneembodiment;

[0024]FIG. 6 is a flowchart further illustrating the placement of pulsesin a motion control method using improved pulse placement for smootheroperation according to one embodiment; and

[0025] FIGS. 7A-B are flowcharts illustrating an algorithmic motioncontrol method using improved pulse placement for smoother operationaccording to one embodiment.

[0026] While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and will herein be described in detail. Itshould be understood, however, that the drawing and detailed descriptionthereto are not intended to limit the invention to the particular formdisclosed, but on the contrary, the intention is to cover allmodifications, equivalents and alternatives falling within the spiritand scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0027]FIG. 1—Exemplary Motion Control/Measurement System

[0028]FIG. 1 illustrates an example motion control system 100 thatincludes various options for measurement or data acquisition. The motioncontrol system may be configured to move object 150 and/or scan object150 while object 150 is being moved. FIG. 1 is exemplary only, and thepresent invention may be used in any of various systems, as desired.

[0029] The system 100 includes a host computer 102. The host computer102 comprises a CPU, a display screen, memory, and one or more inputdevices such as a mouse or keyboard as shown. The computer 102 couplesto a motion control system including a motion device 136 and a motioncontrol interface card 138. As used herein, the term “motion device” or“motion control device” is intended to include stepper motors, servomotors, and other motion control devices or systems that are operable toreceive a motion control signal and move responsive to the receivedsignal. Typically an object is placed on or otherwise coupled to themotion device, and the motion device operates to move the object. Themotion device 136 is coupled to the computer 102 through the motioncontrol interface card 138. The motion control interface card 138 istypically plugged into an I/O slot in the computer 102, such as a PCIbus slot provided by the computer 102. However, the card 138 is shownexternal to computer 102 for illustrative purposes. The card 138 mayalso be implemented as an external device coupled to the computer 102.In one embodiment, a power drive or wiring interface 137 may convertcontrol signals from the motion control interface card 138 into currentand voltage power signals for the motion device 136.

[0030] The computer system 102 may also couple to one or moremeasurement devices which may be used, for example, to acquiremeasurements of an object 150 which is moved by the motion controldevice 136. The one or more measurement devices may include a GPIBinstrument 112 and associated GPIB interface card 122, a dataacquisition (DAQ) board 114 and associated signal conditioning circuitry124, a VXI/VME instrument 116, a PXI instrument 118, a video device 132and associated image acquisition card 134, and/or one or more computerbased instrument cards 142, among other types of measurement or dataacquisition devices.

[0031] The GPIB instrument 112 is coupled to the computer 102 via a GPIBinterface card 122 provided by the computer 102. In a similar manner,the video device 132 is coupled to the computer 102 via the imageacquisition card 134. The data acquisition board 114 is coupled to thecomputer 102, and optionally interfaces through signal conditioningcircuitry 124 to the UUT. The signal conditioning circuitry 124preferably comprises a SCXI (Signal Conditioning eXtensions forInstrumentation) chassis comprising one or more SCXI modules 126.

[0032] As described above with respect to the motion control interfacecard 138, the GPIB card 122, the image acquisition card 134 , and theDAQ card 114 are typically plugged in to an I/O slot in the computer102, such as a PCI bus slot provided by the computer 102. However, thesecards 122, 134 and 114 are shown external to computer 102 forillustrative purposes. The cards 122, 134 and 114 may also beimplemented as external devices coupled to the computer 102, such asthrough a serial bus.

[0033] The VXI/VME chassis or instrument 116 is coupled to the computer102 via a serial bus, MXI bus, or other serial or parallel bus providedby the computer 102. The computer 102 preferably includes VXI interfacelogic, such as a VXI, MXI or GPIB interface card (not shown), whichinterfaces to the VXI chassis 116. The PXI chassis or instrument ispreferably coupled to the computer 102 through the computer's PCI bus.

[0034] A serial instrument (not shown) may also be coupled to thecomputer 102 through a serial port, such as an RS-232 port, USB(Universal Serial bus) or IEEE 1394 or 1394.2 bus, provided by thecomputer 102.

[0035]FIG. 2—Exemplary Motion Control System for Scanning an Object

[0036]FIG. 2 illustrates an example motion control system of FIG. 1,wherein the system includes motion control interface device 138 and adata acquisition device 114. The motion control interface device 138 maybe coupled to move a sensor 170 to scan an object. The sensor 170 may beoperable to acquire measurements of the object 150 being scanned. Thedata acquisition device 114 may be coupled to the sensor 170 to acquiredata or measurements from the sensor 170.

[0037] As shown, the motion control interface device 138 is directlycoupled with the measurement device through a dedicated channel toprovide real time triggering and/or communication between the motioncontrol interface device 138 and the data acquisition device 114. Thecomputer 102 may operate to receive and integrate or correlate theposition data and measurements received from the motion controlinterface card 138 and data acquisition device 114, respectively, asdescribed below.

[0038]FIG. 2A illustrates an example motion control system wherein themotion control interface device 138 and data acquisition (ormeasurement) device 114 (not shown in FIG. 2A) are comprised in computersystem 102. The motion control interface device 138 controls motioncontrol stage 136, which moves sensor 170 relative to the object 150being scanned. The data acquisition device 114 is operable to acquiredata sensed by the sensor 170.

[0039]FIG. 2B illustrates an example motion control system wherein themotion control interface device 138 and image acquisition (ormeasurement) device 134 (not shown in FIG. 2B) are comprised in computersystem 102. The motion control interface device 138 controls motioncontrol stage 136, which moves camera 132 relative to the object 150being scanned. Here the camera 132 is simply one example of a sensor170. The image acquisition device 134 is operable to acquire data sensedby the camera 132.

[0040]FIG. 3—Exemplary PXI-Based Motion Control System

[0041]FIG. 3 illustrates an example motion control system of FIG. 1,wherein the system includes a PXI chassis 118 comprising a computer card102A, motion control interface card 138A and a measurement device, suchas data acquisition device 114A. The motion control interface card 138Ais similar to the motion control interface card 138, except that themotion control interface card 138A is in a PXI card form factor.Similarly, the data acquisition device 114A is similar to the dataacquisition device 114, except that the data acquisition device 114A isin a PXI card form factor.

[0042] As described above with respect to FIG. 2, the motion controlinterface device 138A may be coupled to move a sensor 170 to scan anobject. The sensor 170 may be operable to acquire measurements of theobject 150 being scanned. The data acquisition device 114A may becoupled to the sensor 170 to acquire data or measurements from thesensor 170.

[0043] In this embodiment, the motion control interface device 138 isdirectly coupled with the measurement device through dedicated triggerand/or communication lines provided in the PXI backplane. Thus the PXIbackplane provides real time triggering and/or communication between themotion control interface device 138A and the data acquisition device114A. The computer or controller board 102A may be comprised in the PXIchassis to receive and integrate or correlate the position data andmeasurements received from the motion control interface card 138A anddata acquisition device 114A, respectively, as described below.

[0044]FIG. 4—Examples Graphs Showing Smoother Operation in VariousEmbodiments

[0045]FIGS. 4A through 4F illustrate differences between motion controlsystems according to the prior art and according to embodiments of thepresent invention.

[0046]FIG. 4A illustrates an example graph of velocity 402 versus time404 at 700,000 steps per second in a motion control system according tothe prior art. FIG. 4B illustrates an example graph of velocity 402versus time 404 at 700,000 steps per second in a motion control systemproviding smoother operation according to one embodiment.

[0047]FIG. 4C illustrates an example graph of velocity 402 versus time404 at 200,000 steps per second in a motion control system according tothe prior art. FIG. 4D illustrates an example graph of velocity 402versus time 404 at 200,000 steps per second in a motion control systemproviding smoother operation according to one embodiment.

[0048]FIG. 4E illustrates an example graph of velocity 402 versus time404 at 10,000 steps per second in a motion control system according tothe prior art. FIG. 4F illustrates an example graph of velocity 402versus time 404 at 10,000 steps per second in a motion control systemproviding smoother operation according to one embodiment.

[0049] Each of the graphs may represent thousands of steps needed by themotion device to reach a desired position. Although the prior artimplementations as illustrated by way of example in FIGS. 4A, 4C, and 4Etypically do generate the correct number of steps at the correct averagevelocity, they do so at the expense of short-term error as shown in the“choppiness” of FIGS. 4A, 4C, and 4E.

[0050] The motion control system and method according to one embodimentmay place the step pulses more accurately within the loop period. Byusing a delay time, the pulse train may be shifted to an arbitrarylocation within the loop period rather than evenly distributedthroughout the loop period as in the prior art implementations. As shownin the following example using a loop period having a duration of 10clocks and a step rate of 7 clocks, the use of delays according to oneembodiment results in smoother motion than the “jerky” prior art method:Step pulse 1 2 3 4 5 6 7 8 Prior art location 10 20 25 30 40 45 50 60Delay location 7 14 21 28 35 42 49 56

[0051] The motion control system and method according to one embodimentmay correct for quantization errors in the step generation due to clocklimits in the digital system. For example, suppose the step rate in theabove example was changed to 2.4 clocks/step per step with a loop period10 clocks in duration: Period 1 2 3 4 5 6 7 Target Position 4.2 8.3 12.516.7 20.8 25 29.2 Steps to generate 4 4 4 4 4 5 4 Actual step rate 3 2 32 3 2 2 Clocks in period 12 8 12 8 12 10 8 (including borrowed clocks)

[0052] If the digital motion control system can only output step ratesthat are an integer number of clocks, it can only choose a step rate of2 or 3 clocks (rather than the ideal 2.4 clocks). If it uses a step rateof 2 clocks, then the pulse train will end early in the period and leavedead time that creates jumps in velocity. If it uses a step rate of 3clocks, the pulse train will not finish by the end of the period andwill run into the next period. In one embodiment, the solution is togenerate a pulse train at the slower rate (3 clocks in this example) andcorrect for the “borrowed time” in the next loop iteration. Instead ofassuming that each loop period is constant, according to one embodimentof the motion control system and method, the autocorrecting algorithmremoves the borrowed time from its calculations and therefore allows thestep generation to catch up at appropriate intervals. In the aboveexample, the actual step rate will change between 2 and 3 clocks inorder to achieve an average step rate of 2.4 clocks.

[0053] In one embodiment, a further improvement may be made to improvethe accuracy of the motion control system and method. By allowing thestep rate to change at a programmable point in the middle of the loopiteration (i.e., the series of loop periods), the step pulse generatormay allow the steps generated to consume only the loop period and thuseliminate the borrowing of time from future loop periods. For example,revisit the first two iterations of the previous example (loop period:10 clocks; step rate: 2.4 clocks; actual step rate: 2 or 3 clocks) toillustrate the method incorporating changeable step rates (as indicatedin the “new location” row): Step pulse 1 2 3 4 5 6 7 8 Borrowed location3 6 9 12 14 16 18 20 New location 3 6 8 10 13 16 18 20

[0054] The borrowing method results in the 4 step pulses of the firstiteration being spread out over 12 clocks at a rate of 3 clocks. On thesecond iteration it generates the step pulses over 8 clocks at a rate of2 clocks. The method using a changeable loop period results in the 4step pulses of the first iteration being spread out over 10 clocks at arate of 3 clocks for the first two steps and 2 clocks for the last twosteps. On the second iteration it generates the same step pattern. Thismethod removes the need for the autocorrection of borrowed time andallows for an even more accurate pulse placement within the loop period.

[0055] FIGS. 5-7—Flowcharts of the Motion Control Method FeaturingSmoother Operation

[0056]FIGS. 5, 6, 7A, and 7B are flowcharts further illustrating themotion control method discussed above with reference to FIG. 4B. Asdiscussed with reference to FIGS. 1 through 4, a motion device isoperable to move an object. In one embodiment, the motion deviceincludes a stepper motor. A motion control system is coupled to themotion device. The motion control system may include a computer systemand a motion controller. The motion control system may include aprocessor and a memory medium, wherein the memory medium stores a motioncontrol software program which is executable by the processor. A powerdrive may be coupled to the motion device and the motion control system.The power drive may be operable to receive the pulses from the motioncontroller, translate the pulses into power signals, and send the powersignals to the motion device.

[0057]FIG. 5 is a flowchart illustrating a method for controlling motionof an object according to one embodiment. In 601, a placement of pulsesmay be determined for each of a plurality of time intervals such thatthe pulses are placed evenly across the plurality of time intervals,wherein the quantity of pulses in each of the time intervals isvariable. In 603, the pulses may be generated across the time intervalsaccording to the placement determined in 601. In 605, the pulses maydrive the motion device to move the object.

[0058] In one embodiment, in determining the placement of pulses foreach of the plurality of time intervals, a delay may be used to placeeach pulse at an arbitrary location within one of the time intervals.The time intervals may be variable or fixed in length in variousembodiments. Where the time intervals are fixed in length, a pulse ratemay be changed within one of the time intervals.

[0059]FIG. 6 is a flowchart further illustrating step 601 from FIG. 6aaccording to one embodiment. In 611, a placement of pulses may bedetermined for a first time interval at a first rate of pulse generationper time interval. The first rate may have a value of 1 plus an integerportion of a desired fractional rate of pulse generation per timeinterval. In 613, a placement of pulses may be determined for a secondtime interval following the first time interval at a second rate havinga value of the integer portion of the desired fractional rate of pulsegeneration.

[0060] At both high and low velocities, the method illustrated in FIGS.5 and 6 will typically result in smoother operation as well as achievepositional accuracy through accurate pulse placement.

[0061]FIGS. 7A and 7B are flowcharts further illustrating a detailedalgorithm which implements the method shown FIGS. 5 and 6 according toone embodiment. Although the algorithm of FIGS. 7A and 7B assumes thatthe motion controller 138 includes a field-programmable gate array(FPGA), the method may be implemented using any suitable motioncontroller. An FPGA is a semi-conductor device that contains a largequantity of gates (logic devices) which are not interconnected and whosefunction is determined by a wiring list which is downloaded to the FPGA.The wiring list determines how the gates are interconnected, and thisinterconnection is performed dynamically by turning semiconductorswitches on or off to enable the different connections.

[0062] In 701, perform initial calculations such asmaxClocks=defaultPIDclocks[PIDRate]−maxClocksOvershoot. The value ofwholeSteps may also be generated in 701. The variable maxClocks maystore the number of FPGA clock cycles that may be consumed in a giventime slice (i.e., loop period). This value may start as defaultPIDClocksfor each time slice, but it may be adjusted to account for any borrowedtime from the previous time slice. The variable defaultPIDClocks relatesto the set number of FPGA clock cycles that can be consumed for each PIDrate a user can select (where different PID rates change the size of atime slice). The variable wholesteps represents the number of steppulses that need to be outputted in a given time slice.

[0063] In 703, determine whether wholeSteps=0. If wholeSteps=0, then in739, set parameter values and proceed to 741. If wholeSteps is nonzero,then in 705, assign Period=maxClocks/Velocity. Period is the actualnumber of FPGA clocks a step pulse should take; in one embodiment, thisnumber may include fractional information.

[0064] In 707, assign deadband=fractional part of Position*Period.

[0065] In 709, calculate FPGAPeriod as an integer number representingthe actual number of FPGA clocks a step pulse will take. In oneembodiment, the FPGA cannot use fractional clocks.

[0066] In 711, assign pulsewidth=FPGAPeriod/4. The variable pulseWidthstores a step pulse's active time in number of FPGA clocks. In 713,determine whether pulsewidth>255. If pulsewidth exceeds 255, then in715, assign pulseWidth=255. In 717, determine whether pulsewidth<2. IfpulseWidth is less than 2, then in 719, assign pulseWidth=2.

[0067] In 721, assigndelay=maxClocks−((Period*(wholeSteps−1))+deadband). The variable delayis the number of FPGA clocks before the first step pulse is to begenerated in a time slice. The variable deadband is a calculated valuerepresenting the time between the start of the last step pulse to begenerated and the end of the time slice. This value is used to correctlyposition step pulses with in a time slice.

[0068] In 723, add the delay/Adjust to delay and maxClocks.

[0069] In 725, determine whether wholeSteps>1. If wholeSteps is greaterthan one, then in 727, calculate maxClocksOvershoot. The variablemaxClocksOverShoot stores the number of FPGA clocks that are borrowedfrom the next time slice.

[0070] In 729, determine whether FPGAPeriod<=maxClocks. If true, then in731, fix the deadbandDelayPeriod between time slices. The variabledeadbandDelayPeriod may be formed by adding the previous time slice'sdeadband and the current time slice's delay. This is the period of astep pulse that crosses over the time slice boundary.

[0071] In 733, determine whether delay <pulseWidthOverlap. If true, thenin 735, adjust delay for pulseWidth. The variable pulseWidthOverlap isthe number of FPGA clock cycles that the previous time slice's last steppulse's pulsewidth overlaps into the current time slice.

[0072] In 737, calculate pulseWidthOverlap for the next time slice. In741, store deadband and FPGAPeriod for use in next time slice. In 743,write values to the FPGA. The method may proceed again for a next timeslice.

[0073] Various embodiments may further include receiving or storinginstructions and/or data implemented in accordance with the foregoingdescription upon a carrier medium. Suitable carrier media may includestorage media or memory media such as magnetic or optical media, e.g.,disk or CD-ROM, as well as transmission media or signals such aselectrical, electromagnetic, or digital signals, conveyed via acommunication medium such as network and/or a wireless link.

[0074] While the present invention has been described with reference toparticular embodiments, it will be understood that the embodiments areillustrated and that the invention scope is not so limited. Anyvariations, modifications, additions and improvements to the embodimentsdescribed are possible. These variations, modifications, additions andimprovements may fall within the scope of the invention as detailedwithin the following claims.

What is claimed is:
 1. A system for controlling motion of an object, thesystem comprising: a motion device which is operable to move the object;a motion control system which is coupled to the motion device, whereinthe motion control system includes a processor and a memory medium,wherein the memory medium stores a motion control software program,wherein the motion control software program is executable by theprocessor to: determine a placement of pulses for each of a plurality oftime intervals such that the pulses are placed evenly across theplurality of time intervals, wherein the quantity of pulses in each ofthe time intervals is variable; and generate the pulses across the timeintervals according to the determined placement to drive the motiondevice to move the object.
 2. The system of claim 1, wherein indetermining the placement of pulses for each of the plurality of timeintervals, the motion control software program is executable by theprocessor to: determine a placement of pulses for a first time intervalat a first rate of pulse generation per time interval, the first ratehaving a value of 1 plus an integer portion of a desired fractional rateof pulse generation per time interval; and determine a placement ofpulses for a second time interval following the first time interval at asecond rate having a value of the integer portion of the desiredfractional rate of pulse generation.
 3. The system of claim 1, whereinin determining the placement of pulses for each of the plurality of timeintervals, the motion control software program is executable by theprocessor to: use a delay to place each pulse at an arbitrary locationwithin one of the time intervals.
 4. The system of claim 1, wherein thetime intervals are variable in length.
 5. The system of claim 1, whereinthe time intervals are fixed in length.
 6. The system of claim 5,wherein in determining the placement of pulses for each of the pluralityof time intervals, the motion control software program is executable bythe processor to: change a pulse rate within one of the time intervals.7. The system of claim 1, wherein the motion device comprises a steppermotor.
 8. The system of claim 1, further comprising: a power drive whichis coupled to the motion device and the motion control system, whereinthe power drive is operable to: receive the pulses from the motioncontroller; translate the pulses into power signals; and send the powersignals to the motion device.
 9. The system of claim 1, wherein themotion control system comprises: a computer system; and a motioncontroller.
 10. A method for controlling motion of an object, the methodcomprising: determining a placement of pulses for each of a plurality oftime intervals such that the pulses are placed evenly across theplurality of time intervals, wherein the quantity of pulses in each ofthe time intervals is variable; and generating the pulses across thetime intervals according to the determined placement to drive a motiondevice to move an object.
 11. The method of claim 10, wherein thedetermining the placement of pulses for each of the plurality of timeintervals further comprises: determining a placement of pulses for afirst time interval at a first rate of pulse generation per timeinterval, the first rate having a value of 1 plus an integer portion ofa desired fractional rate of pulse generation per time interval; anddetermining a placement of pulses for a second time interval followingthe first time interval at a second rate having a value of the integerportion of the desired fractional rate of pulse generation.
 12. Themethod of claim 10, wherein the determining the placement of pulses foreach of the plurality of time intervals further comprises: using a delayto place each pulse at an arbitrary location within one of the timeintervals.
 13. The method of claim 10, wherein the time intervals arevariable in length.
 14. The method of claim 10, wherein the timeintervals are fixed in length.
 15. The method of claim 14, wherein thedetermining the placement of pulses for each of the plurality of timeintervals further comprises: changing a pulse rate within one of thetime intervals.
 16. The method of claim 10, wherein the motion devicecomprises a stepper motor.
 17. The method of claim 10, wherein themotion device is coupled to a motion control system, wherein the motioncontrol system includes a processor and a memory medium, and wherein thememory medium stores a motion control software program.
 18. The methodof claim 17, wherein the motion control system comprises: a computersystem; and a motion controller.
 19. The method of claim 17, wherein apower drive is coupled to the motion device and the motion controlsystem, and wherein the power drive is operable to: receive the pulsesfrom the motion controller; translate the pulses into power signals; andsend the power signals to the motion device.
 20. A carrier mediumcomprising program instructions for controlling motion of an object,wherein the program instructions are executable by a motion controlsystem to implement: determining a placement of pulses for each of aplurality of time intervals such that the pulses are placed evenlyacross the plurality of time intervals, wherein the quantity of pulsesin each of the time intervals is variable; and generating the pulsesacross the time intervals according to the determined placement to drivea motion device to move an object.
 21. The carrier medium of claim 20,wherein the determining the placement of pulses for each of theplurality of time intervals further comprises: determining a placementof pulses for a first time interval at a first rate of pulse generationper time interval, the first rate having a value of 1 plus an integerportion of a desired fractional rate of pulse generation per timeinterval; and determining a placement of pulses for a second timeinterval following the first time interval at a second rate having avalue of the integer portion of the desired fractional rate of pulsegeneration.
 22. The carrier medium of claim 20, wherein the determiningthe placement of pulses for each of the plurality of time intervalsfurther comprises: using a delay to place each pulse at an arbitrarylocation within one of the time intervals.
 23. The carrier medium ofclaim 20, wherein the time intervals are variable in length.
 24. Thecarrier medium of claim 20, wherein the time intervals are fixed inlength.
 25. The carrier medium of claim 24, wherein the determining theplacement of pulses for each of the plurality of time intervals furthercomprises: changing a pulse rate within one of the time intervals. 26.The carrier medium of claim 20, wherein the motion device comprises astepper motor.
 27. The carrier medium of claim 20, wherein the motioncontrol system comprises: a computer system; and a motion controller.28. The carrier medium of claim 27, wherein a power drive is coupled tothe motion device and the motion control system, and wherein the powerdrive is operable to: receive the pulses from the motion controller;translate the pulses into power signals; and send the power signals tothe motion device.